#include <sys/types.h> 
#include <dirent.h>

#include <stdio.h>

#if 0
       #include <sys/types.h>
       #include <dirent.h>

       DIR *opendir(const char *name);

函数作用：打开一个目录文件
参数：  
        name 你要打开的目录名
返回值：
        成功返回 目录文件指针，代表这个打开的目录文件   
        失败返回 NULL


       #include <dirent.h>

       struct dirent *readdir(DIR *dirp);
函数作用：读取目录里面的每个目录项，记住，每次调用readdir,只能读取一个目录项
参数：
        dirp 目录文件指针
返回值：
        成功返回一个结构体指针，目录项指针，也就是读取到的信息存储到该结构体里面
        失败或者读到目录文件末尾 返回NULL

struct dirent {
               ino_t          d_ino;       /* Inode number 文件名所对应的索引号*/
               off_t          d_off;       /* Not an offset; see below */
               unsigned short d_reclen;    /* Length of this record */
               unsigned char  d_type;      /* 文件的类型 */
               char           d_name[256]; /* 文件名 */
};


#endif 

int main() {
    //1、打开目录文件
    DIR *dir = opendir("./aa");
    if(dir == NULL) {
        perror("opendir");
        return -1;
    }
    //2、读取目录中的目录项
    while(1)
    {
        struct dirent *info = readdir(dir);
        if(info == NULL) {
            break;
        }
        if(info->d_type == DT_REG)//判断是一个普通文件
        {
            printf("i-node:%lu 文件类型:%hhu 文件名:%s\n",info->d_ino,info->d_type,info->d_name);    
        }
    }

    //3、关闭目录文件
    closedir(dir);
}